package com.yuncheng.spcyApi.service;

import com.yuncheng.spcyApi.bo.SqsxXcjcQxParamBo;
import com.yuncheng.spcyApi.dto.SqsxShjPrintDataDto;
import com.yuncheng.spcyApi.dto.sqsx.SqsxClscmsDto;
import com.yuncheng.spcyApi.entity.SpcySqsxBasic;
import com.yuncheng.common.base.service.BaseService;
import com.yuncheng.spcyApi.selectXzxkApi.vo.BusinessDept;
import com.yuncheng.spcyApi.vo.hbjc.BhbSqsxJbxxVo;
import com.yuncheng.spcyApi.vo.hbjc.HbsxidVo;
import com.yuncheng.spcyApi.vo.sqsx.SqsxFlowResVo;
import com.yuncheng.spcyApi.vo.sqsx.SqsxSysxVo;
import com.yuncheng.spcyApi.vo.sqsx.SqsxZbrVo;
import com.yuncheng.spcyApi.vo.sqsx.SqsxZzZyYbNumVo;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;

/**
 * @Description: 审评查验-申请事项基本信息
 * @Author: csx
 * @Date: 2023-03-03
 * @Version: V1.0
 */
public interface ISpcySqsxBaiscService extends BaseService<SpcySqsxBasic> {

    /**
     * 根据申请事项id,获取业务分类编码
     * */
    String getYwflCodeBySqsxId(String sqsxId);

    /** 更新申请事项-完成移送 */
    void updateSqsxInYs(String sqsxid);

    /**
     * 申请事项查询-通过id
     * @return
     */
    SpcySqsxBasic selectSqsxById(String sqsxid);

    /**
     * 申请事项查询-通过id
     * @return
     */
    SpcySqsxBasic selectSqsxInfoById(String sqsxid);

    /**
     * 申请事项编码查询-通过id
     * @return
     */
    SpcySqsxBasic selectSqsxYwflCodeById(String sqsxid);

    /**
     * 申请事项编码和行政审批状态查询-通过id
     * @return
     */
    SpcySqsxBasic selectCodeFxzspztAndById(String sqsxid);

    /**
     * 申请事项查询业务信息-通过id
     * @return
     */
    SpcySqsxBasic selectSqsxYwxxById(String sqsxid);

    /**
     * 申请事项查询事项信息-通过id
     * @return
     */
    SpcySqsxBasic selectSqsxSxxxById(String sqsxid);

    /**
     * 申请事项-更新检查项目-缺陷信息
     * @return
     */
    void updateSqsxQxxx(String sqsxid, SqsxXcjcQxParamBo bean);

    /**
     * 构建检查项目-缺陷信息
     * @return
     */
    SpcySqsxBasic genSqsxJcxmQxxx(String sqsxid, SpcySqsxBasic sqsx, SqsxXcjcQxParamBo bean);

    /**
     * 更新申请事项-保存业务部门经办人
     */
    void updateSqsxYwbmjbr(String sqsxid, BusinessDept dept);

    /**
     * 更新申请事项-保存主办人
     */
    void updateSqsxZbr(String sqsxid, String zbrid, String jbrmc);

    /**
     * 更新申请事项-退回政务服务接口
     * @param sqsxid
     */
    void updateSqsxThzwfw(String sqsxid);

    /**
     * 恢复-更新申请事项-退回政务服务接口
     * @param sqsxid
     */
    void updateHfSqsxThzwfw(String sqsxid);

    /**
     * 更新申请事项-推送审评中心撤件意见
     */
    void updateSqsxPushSpzxCjyj(String sqsxid);

    /**
     * 更新申请事项-推送审评中心撤件意见
     */
    void updateSqsxPushSpzxCjyj(String sqsxid, String fcjyj, String fcjyjsj);

    /**
     * 更新申请事项-推送企业补齐补正通知
     */
    void updateSqsxPushQyBqbzNotice(String sqsxid, Date fbqbzfqrq);

    /**
     * 取消更新申请事项-推送企业补齐补正通知
     */
    void updateSqsxPushQyBqbzNoticeQx(String sqsxid);

    /**
     * 更新申请事项-推送企业补充整改通知
     */
    void updateSqsxPushQyBcZgNotice(String sqsxid);

    /**
     * 更新申请事项-接受企业提交补充信息及材料结果
     */
    void updateSqsxByJsbcxxjcljg(String sqsxid, Date fbqbzwcrq);

    /**
     * 更新申请事项-接受企业提交补充整改结果
     */
    void updateSqsxByJszgjg(String sqsxid);

    /**
     * 更新申请事项-接受撤件申请信息
     */
    void updateSqsxByJscjsqxx(String sqsxid, String fjssqyy, String fcjsqsj);

    /**
     * 更新申请事项-接受撤件结果信息
     */
    void updateSqsxByJscjjg(String sqsxid, String fcjjg, String fcjjgsj);

    /**
     * 更新申请事项-技术审查状态
     */
    void updateSqsxByScztInBfh(String sqsxid);

    /**
     * 更新申请事项-材料审查模式
     */
    void updateSqsxByClscms(String sqsxid, String fclscms);

    /**
     * 更新申请事项-退回政务服务意见
     */
    void updateSqsxByThzwfwYj(String sqsxid, String fcjyj, String fthzwdxnr);

    /** 获取汇总检查计划事项列表 */
    List<SpcySqsxBasic> getHzjcjhSqsxList(String fybmzt);

    /** 更新-将汇总检查计划事项列表-全列入报名 */
    void updateHzjcjhSqsxByYbmzt();

    /** 将合并申请事项的相关信息-同步更新到被合并的事项中 */
    void updateaBhbsxCommonInfoByHbsx(String sqsxid, SpcySqsxBasic hbsqsx);

    /** 查询被合并申请事项列表-根据合并事项id */
    List<SpcySqsxBasic> selectBhbsqsxListByHbsxid(String hbsxid);

    /**
     * 查询申请事项-组长/组员/预备检查员
     * */
    SqsxZzZyYbNumVo selectZzZyYbNumBySqsxId(String sqsxid);

    /**
     * 查询申请事项-主办人id
     */
    SqsxZbrVo selectFzbrById(String sqsxid);

    /**
     * 查询申请事项-企业id
     */
    String selectFqyidById(String sqsxid);

    /**
     * 申请事项-主办人置空
     * */
    void updateEmptyFzbrById(String sqsxid);

    /**
     * 查询当前事项业务编码和合并事项id
     */
    HbsxidVo selectHbsxidAndCodeById(String sqsxid);

    /**
     * 查询事项的被合并事项id
     * @param sqsxid
     * @return
     */
    String selectFhbsxidsById(String sqsxid);

    /**
     * 更新现场检查任务分配状态
     */
    void updateSqsxRwfpState(String sqsxid);

    /**
     * 申请事项-时限相关
     */
    SqsxSysxVo selectSxsxById(String sqsxid);

    /**
     * 申请事项-综合评定审核件打印数据
     */
    SqsxShjPrintDataDto selectSqsxShjPrintById(String sqsxid);

    /**
     * 申请事项-流程使用基本信息
     */
    SqsxFlowResVo selectSqsxFlowJbxxById(String sqsxid);

    /**
     * 申请事项-查询材料审查模式和事项审批状态
     * */
    SqsxClscmsDto selectFclscmcById(String sqsxid);

    /**
     * 申请事项-获取日常监管-专项检查是否进行流程环节跳转
     * @return true: 日常监管跳转环节
     */
    boolean getSqsxRcjgAndZxjcJumpHjmc(String sqsxid);

    /**
     * 申请事项-获取日常监管-专项检查是否进行流程环节跳转
     * @return true: 日常监管跳转环节
     */
    boolean getSqsxRcjgAndZxjcJumpHjmc(SpcySqsxBasic sqsx);

    /** 获取申请事项-检查情况转述 */
    String selectJcqkzsById(String sqsxid);

    /** 查询当前企业的上一次申请事项 */
    List<String> selectSycSqQyById(String sqsxid);

    /** 查询被合并申请事项列表-根据合并事项id */
    List<BhbSqsxJbxxVo> selectBhbsqsxListByFhbsxid(String hbsxid);
}
